Cryptographic library for Python
Project description
PyCryptodome is a self-contained Python package of low-level cryptographic primitives.
It supports Python 2.7, Python 3.5 and newer, and PyPy.
You can install it with:
pip install pycryptodome
All modules are installed under the Crypto package.
Check the pycryptodomex project for the equivalent library that works under the Cryptodome package.
PyCryptodome is a fork of PyCrypto. It brings several enhancements with respect to the last official version of PyCrypto (2.6.1), for instance:
Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
Accelerated AES on Intel platforms via AES-NI
First class support for PyPy
Elliptic curves cryptography (NIST P-curves; Ed25519, Ed448)
Better and more compact API (nonce and iv attributes for ciphers, automatic generation of random nonces and IVs, simplified CTR cipher mode, and more)
SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms
Salsa20 and ChaCha20 stream ciphers
scrypt and HKDF
Deterministic (EC)DSA and EdDSA
Password-protected PKCS#8 key containers
Shamir’s Secret Sharing scheme
Random numbers get sourced directly from the OS (and not from a CSPRNG in userspace)
Simplified install process, including better support for Windows
Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
Major clean ups and simplification of the code base
PyCryptodome is not a wrapper to a separate C library like OpenSSL. To the largest possible extent, algorithms are implemented in pure Python. Only the pieces that are extremely critical to performance (e.g. block ciphers) are implemented as C extensions.
For more information, see the homepage.
All the code can be downloaded from GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pycryptodome-3.20.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b |
|
MD5 | b9fedf4d33ea5ebce86888d39e2cf62d |
|
BLAKE2b-256 | e9a75aa0596f7fc710fd55b4e6bbb025fedacfec929465a618f20e61ebf7df76 |
Hashes for pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3 |
|
MD5 | 073c9a9a414c56ea6523dad0f001e843 |
|
BLAKE2b-256 | a24063dff38fa4f7888f812263494d4a745eeed180ff09dd7b8350a81eb09d21 |
Hashes for pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea |
|
MD5 | 21a4889c085f6d57083c7a3994d5e5f0 |
|
BLAKE2b-256 | 8b61522235ca81d9dcfcf8b4cbc253b3a8a1f2231603d486369a8a02eb998f31 |
Hashes for pycryptodome-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04 |
|
MD5 | cb44a967b87f3440708b33853bf66944 |
|
BLAKE2b-256 | c71088fb67d2fa545ce2ac61cfda70947bcbb1769f1956315c4b919d79774897 |
Hashes for pycryptodome-3.20.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e |
|
MD5 | 418bed66b14b1828b4ef89281bd128af |
|
BLAKE2b-256 | 091234eb6587adcee5d676533e4c217a6385a2f4d90086198a3b1ade5dcdf684 |
Hashes for pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab |
|
MD5 | ec9bb5537d13f02b3ccbb9ea85422d14 |
|
BLAKE2b-256 | 6a3dba3905a0ae6dd4e8686dbde85c71ce38e27f5ad3587424891238ad520aaf |
Hashes for pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5 |
|
MD5 | c0942a1b7379bc87eccb0afa9ac40b53 |
|
BLAKE2b-256 | 5dc35530f270c4ec87953fbed203e4f1f4a2fa002bc43efdc1b3cf9ab442e741 |
Hashes for pycryptodome-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6 |
|
MD5 | 8523d52b20dc6546f17ed248b4f9f71c |
|
BLAKE2b-256 | 53a31345f914963d7d668a5423dc563deafae02479bd1c69b39180724475584f |
Hashes for pycryptodome-3.20.0-pp27-pypy_73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e |
|
MD5 | 06a899391243449c187b81059db3664e |
|
BLAKE2b-256 | 689a88d984405b087e8c8dd9a9d4c81a6fa675454e5fcf2ae01d9553b3128637 |
Hashes for pycryptodome-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a |
|
MD5 | 4d37403bb6456f8647f9da056be11fd9 |
|
BLAKE2b-256 | 1787c7153fcd400df0f4a67d7d92cdb6b5e43f309c22434374b8a61849dfb280 |
Hashes for pycryptodome-3.20.0-cp35-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9 |
|
MD5 | e5e7b89c1708cc44495ccea38cb84777 |
|
BLAKE2b-256 | 1f90d131c0eb643290230dfa4108b7c2d135122d88b714ad241d77beb4782a76 |
Hashes for pycryptodome-3.20.0-cp35-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72 |
|
MD5 | f3d61499cff6164d1179c1eb94c6f21b |
|
BLAKE2b-256 | 39125fe7f5b9212dda9f5a26f842a324d6541fe1ca8059602124ff30db1e874b |
Hashes for pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4 |
|
MD5 | 195505dc8a64252d7c2d38256da5d1fd |
|
BLAKE2b-256 | b5bf798630923b67f4201059c2d690105998f20a6a8fb9b5ab68d221985155b3 |
Hashes for pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c |
|
MD5 | 5dd18e4a9cf0f3af27543429f7ea720a |
|
BLAKE2b-256 | 0d0801987ab75ca789247a88c8b2f0ce374ef7d319e79589e0842e316a272662 |
Hashes for pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128 |
|
MD5 | 7afab4de72dc2508288c7ef207b183c3 |
|
BLAKE2b-256 | 304bcbc67cda0efd55d7ddcc98374c4b9c853022a595ed1d78dd15c961bc7f6e |
Hashes for pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c |
|
MD5 | 4f93a321044304ffad8535fba760ca35 |
|
BLAKE2b-256 | af205f29ec45462360e7f61e8688af9fe4a0afae057edfabdada662e11bf97e7 |
Hashes for pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2 |
|
MD5 | 0f73f1b411818fc0ae162e05cd42ca6c |
|
BLAKE2b-256 | ea9482ebfa5c83d980907ceebf79b00909a569d258bdfd9b0264d621fa752cfd |
Hashes for pycryptodome-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25 |
|
MD5 | 35239301d9e4ceed719e153e91635b54 |
|
BLAKE2b-256 | e51f6bc4beb4adc07b847e5d3fddbec4522c2c3aa05df9e61b91dc4eff6a4946 |
Hashes for pycryptodome-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a |
|
MD5 | 0d64407c46be85824f9c3823f3dfadbf |
|
BLAKE2b-256 | 248056a04e2ae622d7f38c1c01aef46a26c6b73a2ad15c9705a8e008b5befb03 |
Hashes for pycryptodome-3.20.0-cp35-abi3-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044 |
|
MD5 | 6049a536670030014f6b23112e406fb6 |
|
BLAKE2b-256 | ff96b0d494defb3346378086848a8ece5ddfd138a66c4a05e038fca873b2518c |
Hashes for pycryptodome-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818 |
|
MD5 | 630d1318063684a1867a96af0e860a0c |
|
BLAKE2b-256 | 7500744661e96afcb5016c10ee821fe6ff6962f5feb020d7286d082c004a36dd |
Hashes for pycryptodome-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc |
|
MD5 | 672a196f76347e1a88561dcff074a72d |
|
BLAKE2b-256 | f0656cb997318100aa9f7dfc2753a611c4728a84825990645a0391859deeaa6f |
Hashes for pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4 |
|
MD5 | 219c64828f631842b81da027a1ef17c1 |
|
BLAKE2b-256 | 80fcbc18a2951ab3104caa67cae290d42d9cd230884f0d27bf0891f821636f32 |
Hashes for pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091 |
|
MD5 | 7ec1a6f57b5b5bd6de814f1c7092c5d4 |
|
BLAKE2b-256 | 240a9e0791833984305a8ee7cb8b1feaabffdbe1607f79f6890b38259befacc4 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f |
|
MD5 | 5a3a2d00c168a5e78bedfe1da2cba450 |
|
BLAKE2b-256 | 424c706ef0c97ef61598d6b3745cfdae57c09b10b61fd60700d69443173bd430 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690 |
|
MD5 | 65eda53864697a2e10c08f75afac64cf |
|
BLAKE2b-256 | 9a6accfc4b1c7eee616dd9b3a663a26ec1ba2a13319dd51876f64867b4ab3d27 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33 |
|
MD5 | 262e9680232e3690eb4e84a168a34dcb |
|
BLAKE2b-256 | fb0beb6bfe34a9b7a265e103084a3cfc0dbb2a102d04a6239ce91434b03641c0 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd |
|
MD5 | 6a5a4e84ddcd89bea150da751ac72eb1 |
|
BLAKE2b-256 | 6831d444cbb52f348ea89f90e2aff4804e03b42671c784719ee7c75d51db2913 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d |
|
MD5 | 549c134952218be936ee55727baa0be8 |
|
BLAKE2b-256 | dd20b4b6bd07bfb6f6826b147131dcea9fea99559077842ad7e304a7464353c5 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f |
|
MD5 | bce31831d7e07af959e6118367c8adc6 |
|
BLAKE2b-256 | ef50090be8ca0ea560037bf515c5b2f27547777e2175244f168555ecccc23c54 |
Hashes for pycryptodome-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a |
|
MD5 | c2fecdeadd5f272f3bd1b5afdedc1793 |
|
BLAKE2b-256 | ac1ed0fbf9c82e49c0e0c5ceebf4e9c3acdbdad21fe47b2a7cc5db2284140401 |